home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Shareware Overload Trio 2
/
Shareware Overload Trio Volume 2 (Chestnut CD-ROM).ISO
/
dir42
/
a2z.zip
/
A2ZLAN.$$$
< prev
next >
Wrap
Text File
|
1993-09-04
|
7KB
|
263 lines
╔══════════════════════════════════════════════════╗
║ Application Programming Language Set ║
╚══════════════════════════════════════════════════╝
Operand 1 Operator Operand 2
LINK KEY[DRIVE:FILE] = WRITE
KEY <> KEY[DRIVE:FILE]
STRING(KEY,POS,LEN) > STRING(KEY,POS,LEN)
STRING(KEY[DRIVE:FILE],POS,LEN) <= STRING(KEY[DRIVE:FILE],POS,LEN)
IF KEY >= NUMERIC VALUE
ELSE <= 'CHARACTER STRING'
ENDIF EQ BLANK
ABORT NE LOWER
GT UPPER
LT CAPS
GE LAST(KEY)
LE CONCAT(KEY,KEY)
PARSE(KEY)
SYSTIME Operand 3
SYSDATE
SYSDMIL 1-9R
+ 1-9T
- AND
* OR
/ THEN
╔════════════════════════════╗
║ Compile Example: ║
╚════════════════════════════╝
. . . . IF RECORD STATUS = BLANK THEN
. MAX QTY = 0
. LINK REC[C:LA] = REC
. LA QTY = LA QTY[C:LA]
. . . . IF LA QTY > MAX QTY THEN
. . MAX QTY = LA QTY
. . LOC = LA
. . . . ENDIF
. LINK REC[C:KC] = REC
. KC QTY = KC QTY[C:KC]
. . . . IF KC QTY > MAX QTY THEN
. . MAX QTY = KC QTY
. . LOC = KC
. . . . ENDIF
. LINK REC[C:NY] = REC
. NY QTY = NY QTY[C:NY]
. . . . IF NY QTY > MAX QTY THEN
. . MAX QTY = NY QTY
. . LOC = NY
. . . . ENDIF
. TOT QTY = LA QTY + KC QTY + NY QTY
. . . . ENDIF
╔══════════════╗
║ LINK Rules ║
╚══════════════╝
Format: keyname[drive:file] = keyname
LINK ROOT ARG
keyname[drive:file] = constant
LINK LINK ARG
One to One LINK
┌──────────┐ ┌──────────┐
│Rec 1 │<───LINK───>│Rec 1 │
└──────────┘ └──────────┘
┌──────────┐ ┌──────────┐
│Rec 2 │<───LINK───>│Rec 2 │
└──────────┘ └──────────┘
ROOT LINK
Example: LINK REC[C:SALE] = REC
One to One LINK
┌──────────┐ ┌──────────┐
│Rec 1 │<───LINK───>│ Write │
└──────────┘ └──────────┘
┌──────────┐ ┌──────────┐
│Rec 2 │<───LINK───>│ Write │
└──────────┘ └──────────┘
ROOT LINK
Example: LINK REC[C:SALE] = WRITE
┌──────────────────────────────────────────────────────┐
│ A link to a target data base with a search argument │
│ of 'WRITE' will WRITE a new file or APPEND existing │
└──────────────────────────────────────────────────────┘
One to One LINK
┌──────────┐ ┌──────────┐
│Empl 1 │<─LINK──┐ ┌>│ Empl 2 │
└──────────┘ ┌│─┘ └──────────┘
┌──────────┐ ││ ┌──────────┐
│Empl 2 │<─LINK─┘└──>│ Empl 1 │
└──────────┘ └──────────┘
ROOT LINK
Example: LINK EMPL[C:PERS] = EMPL
the LINK record is LINKed by looking for a match
based on the ROOT argument. Either file may be indexed.
A non─indexed LINK file will be searched sequentially.
An indexed LINK file will be binary searched
One to Many LINK
┌──────────┐ ┌──────────┐
│Rec 1 │<───LINK─┌──│Rec 1 │
└──────────┘ │ └──────────┘
┌──────────┐ │
│Rec 2 │<───LINK─┘
└──────────┘
ROOT LINK
Example: LINK REC[C:LETR] = 1
for each ROOT record, REC 1 is LINKed
can be used to propagate data from one file to
many files, for example, copying a form letter
from one record and merging it with each empl─
oyee record to create a mail─merged letter
Many to One LINK
┌──────────┐ ┌──────────┐
│Rec 1 │────LINK─┌─>│Rec 1 │
└──────────┘ │ └──────────┘
┌──────────┐ │
│Rec 2 │────LINK─┘
└──────────┘
ROOT LINK
Example: LINK REC[C:1990] = 1
LINKED REC 1 is updated by each ROOT record
can be used to accumulate data from many records
to one record, for example, creating a statistics
record by accumulating data from each ROOT record
RECORD STATUS is a system KEY reflecting whether the
record is 'ACTIVE' or INACTIVE'
placing an 'X' in RECORD STATUS flags record as 'INACTIVE'
a record with an 'X' in RECORD STATUS will be bypassed by LIST unless
it is an argument or has been list-ordered
it is the responsibility of the data base programmer to test
the RECORD STATUS field to see if the record is 'ACTIVE'
RECORD LINKED is a system KEY reflecting whether a LINK
was successful [Y] or unsuccessful [N]
it is the responsibility of the data base programmer to test
the RECORD LINKED field after a LINK to program appropriate
action:
LINK ZIP[C:ZIP] = ZIP
. . IF RECORD LINKED = Y THEN
. CITY = CITY[C:ZIP]
. STATE = STATE[C:STATE]
. . ENDIF
to CAUSE an IMMEDIATE ABORT following the RECORD LINKED = N
condition, code the following:
LINK ZIP[C:ZIP] = ZIP
IF RECORD LINKED = N THEN
. . . ABORT
. CITY = CITY[C:ZIP]
. STATE = STATE[C:STATE]
. LINK REC[C:LAB] = WRITE
. L1[C:LAB] = CONCAT(CITY,@,STATE)
.
ENDIF
╔══════════════════════════════╗
║ CONSTANT to KEY MOVE ║
╚══════════════════════════════╝
■ TARGET field is on left side of '=' OPERATOR
■ SOURCE field is on right side of '=' OPERATOR
■ TARGET must be a valid KEYNAME
■ SOURCE may be a NUMERIC or CHARACTER constant
■ CHARACTER constants should be enclosed by QUOTES
■ CHARACTER constants longer than TARGET field are TRUNCATED
■ CHARACTER data MAY NOT be moved to a NUMERIC field
Examples: NAME = 'BLOW JOE A'
RATE = 9.50
╔═══════════════════╗
║ KEY to KEY move ║
╚═══════════════════╝
■ TARGET must be a valid KEYNAME
■ SOURCE must be a valid KEYNAME
Example: VALU = SALES
╔═══════════════════╗
║ KEY CALCULATION ║
╚═══════════════════╝
■ TARGET must be a valid KEYNAME
■ SOURCE can be a valid KEYNAME or a CONSTANT
■ CONSTANTS may be NUMERIC only
■ TARGET field may also be a SOURCE field VALU = VALU + 1
■ NUMERIC constants may contain imbedded decimal point
■ ALL calculations are based on WHOLE NUMBERS
■ TRUNCATION and ROUNDING OPERATORS resolve DECIMAL PLACEMENT
R = Round 1-9 Decimal Places
T = Truncate 1-9 Decimal Places
Example: TOTAL = SALE * 1.06 2R
*